﻿/// ZaxControls
/// Programmed by Leland Ede
/// Website: http://www.zaxisstudios.com
/// E-Mail: codeplex@zaxis-studios.com
/// Create: 4/01/2014
/// Modified: 4/9/2014

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ZaxLib.Web.Writers.Nodes
{
	public interface INode
	{
		INode Parent
		{
			get;
			set;
		}

		INode FirstChild
		{
			get;
		}

		int Level
		{
			get;
			set;
		}

		void AddChild(INode node);
		void AddParam(INode node);

		String Code
		{
			get;
			set;
		}

		String Value
		{
			get;
			set;
		}

		NodeType Type
		{
			get;
			set;
		}

		bool HasChildren
		{
			get;
		}

		bool HasParams
		{
			get;
		}

		INode Ajax();
		INode Array();
		INode Function();
		INode FunctionName();
		INode Joined();
		INode Method();
		INode ObjectDef();
		INode Param();
		INode Selector();
		INode SelectorClass();
		INode SelectorFunction();
		INode SelectorId();
		INode Top();
		INode RawCode();
		INode VarValue();
		INode VarDef();
		INode Variable();
	}
}
